home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / languages / cleo.lzh / Cleo / inter / source / stack.c < prev   
Encoding:
C/C++ Source or Header  |  1993-01-24  |  1.8 KB  |  80 lines

  1. /***************************************************************************
  2. *   Ce fichier, ainsi que tous les  modules  l'accompagnant, peut et  doit *
  3. * etre  copié GRATUITEMENT à la seule condition expresse de conserver      *
  4. * l'INTEGRALITE  du  Code Source, de  la documentation, et  des fichiers   *
  5. * annexes du package. Ce logiciel est Shareware, veuilez envoyer 100 FF à  *
  6. * l'auteur pour recevoir regulièrement les nouvelles versions.             *
  7. * Toute modification est INTERDITE sans l'autorisation écrite de l'auteur. *
  8. *            Tous droits réservés à M. DIALLO Barrou, Juillet 1992.        *
  9. ***************************************************************************/
  10.  
  11. /*************** Fonctions de gestion de pile ****************************/
  12.  
  13. #ifdef msdos
  14.    #include "include\\inter.h"
  15. #else
  16.    #include "include/inter.h"
  17. #endif
  18.  
  19. extern int st;
  20. extern MY_CONST *stack;
  21. extern int stsz;
  22.  
  23. /****************** Long Real *******************/
  24.  
  25. void PushReal( double val)
  26. {
  27.     if ( st == stsz+1)
  28.         Error(STACKOVER);
  29.     stack[st++].val = val;
  30.     stack[st-1].type = longreal_t;
  31. }
  32.  
  33. double PopReal()
  34. {
  35.     if ( st==0)
  36.         Error(STACKUNDER);
  37.     --st;
  38.     return ( stack[st].val );
  39. }
  40.  
  41. /******************  Char *******************/
  42.  
  43. void PushChar( double val)
  44. {
  45.     if ( st == stsz+1)
  46.         Error(STACKOVER);
  47.     stack[st++].val = val;
  48.     stack[st-1].type = char_t;
  49. }
  50.  
  51. double PopChar()
  52. {
  53.     if ( st==0)
  54.         Error(STACKUNDER);
  55.     --st;
  56.     return ( stack[ st].val );
  57. }
  58.  
  59. /******************  Bool *******************/
  60.  
  61. void PushBool( double val)
  62. {
  63.     if ( st == stsz+1)
  64.         Error(STACKOVER);
  65.     stack[st++].val = val;
  66.     stack[st-1].type = boolean_t;
  67.  
  68. /*    if (val) PushChar(1);
  69.     else PushChar(0);                */
  70. }
  71.  
  72. double PopBool()
  73. {
  74.     if ( st==0)
  75.         Error(STACKUNDER);
  76.     --st;
  77.     return ( stack[ st].val );
  78. }
  79.  
  80.